package Thread;
//这个代码本质是使用Thread实例内部自带的标志位，来代替手动创建的isQuit变量
public class ThreadDemo11 {
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            while (!Thread.currentThread().isInterrupted()) {
                System.out.println("我是一个线程, 正在工作中...");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    // 加上 break , 此时抛出异常之后, 线程也会结束
                    break;
                }
            }
            System.out.println("线程执行完毕!");
        });

        t.start();

        //t.join();//这个操作是线程等待
        //join方法是线程最核心的api之一
        //典型应用情况：使用多个线程并发进行一系列的计算
        //用一个线程阻塞等待上诉计算过程，等到所有的线程都计算完了，最终这个线程汇总结果
        //join方法确定的是结束顺序

        Thread.sleep(3000);
        // 使用一个 interrupt 方法, 来修改刚才标志位的值
        System.out.println("让 t 线程结束");
        t.interrupt();
    }
}
